require(__dirname).test({
  xml:
    '<root xmlns:x="x1" xmlns:y="y1" x:a="x1" y:a="y1">' +
    '<rebind xmlns:x="x2">' +
    '<check x:a="x2" y:a="y1"/>' +
    '</rebind>' +
    '<check x:a="x1" y:a="y1"/>' +
    '</root>',
  expect: [
    [
      'opentagstart',
      {
        name: 'root',
        attributes: {},
        ns: {},
      },
    ],
    [
      'opennamespace',
      {
        prefix: 'x',
        uri: 'x1',
      },
    ],
    [
      'opennamespace',
      {
        prefix: 'y',
        uri: 'y1',
      },
    ],
    [
      'attribute',
      {
        name: 'xmlns:x',
        value: 'x1',
        uri: 'http://www.w3.org/2000/xmlns/',
        prefix: 'xmlns',
        local: 'x',
      },
    ],
    [
      'attribute',
      {
        name: 'xmlns:y',
        value: 'y1',
        uri: 'http://www.w3.org/2000/xmlns/',
        prefix: 'xmlns',
        local: 'y',
      },
    ],
    [
      'attribute',
      {
        name: 'x:a',
        value: 'x1',
        uri: 'x1',
        prefix: 'x',
        local: 'a',
      },
    ],
    [
      'attribute',
      {
        name: 'y:a',
        value: 'y1',
        uri: 'y1',
        prefix: 'y',
        local: 'a',
      },
    ],
    [
      'opentag',
      {
        name: 'root',
        uri: '',
        prefix: '',
        local: 'root',
        attributes: {
          'xmlns:x': {
            name: 'xmlns:x',
            value: 'x1',
            uri: 'http://www.w3.org/2000/xmlns/',
            prefix: 'xmlns',
            local: 'x',
          },
          'xmlns:y': {
            name: 'xmlns:y',
            value: 'y1',
            uri: 'http://www.w3.org/2000/xmlns/',
            prefix: 'xmlns',
            local: 'y',
          },
          'x:a': {
            name: 'x:a',
            value: 'x1',
            uri: 'x1',
            prefix: 'x',
            local: 'a',
          },
          'y:a': {
            name: 'y:a',
            value: 'y1',
            uri: 'y1',
            prefix: 'y',
            local: 'a',
          },
        },
        ns: {
          x: 'x1',
          y: 'y1',
        },
        isSelfClosing: false,
      },
    ],
    [
      'opentagstart',
      {
        name: 'rebind',
        attributes: {},
        ns: {
          x: 'x1',
          y: 'y1',
        },
      },
    ],
    [
      'opennamespace',
      {
        prefix: 'x',
        uri: 'x2',
      },
    ],
    [
      'attribute',
      {
        name: 'xmlns:x',
        value: 'x2',
        uri: 'http://www.w3.org/2000/xmlns/',
        prefix: 'xmlns',
        local: 'x',
      },
    ],
    [
      'opentag',
      {
        name: 'rebind',
        uri: '',
        prefix: '',
        local: 'rebind',
        attributes: {
          'xmlns:x': {
            name: 'xmlns:x',
            value: 'x2',
            uri: 'http://www.w3.org/2000/xmlns/',
            prefix: 'xmlns',
            local: 'x',
          },
        },
        ns: {
          x: 'x2',
        },
        isSelfClosing: false,
      },
    ],
    [
      'opentagstart',
      {
        name: 'check',
        attributes: {},
        ns: {
          x: 'x2',
        },
      },
    ],
    [
      'attribute',
      {
        name: 'x:a',
        value: 'x2',
        uri: 'x2',
        prefix: 'x',
        local: 'a',
      },
    ],
    [
      'attribute',
      {
        name: 'y:a',
        value: 'y1',
        uri: 'y1',
        prefix: 'y',
        local: 'a',
      },
    ],
    [
      'opentag',
      {
        name: 'check',
        uri: '',
        prefix: '',
        local: 'check',
        attributes: {
          'x:a': {
            name: 'x:a',
            value: 'x2',
            uri: 'x2',
            prefix: 'x',
            local: 'a',
          },
          'y:a': {
            name: 'y:a',
            value: 'y1',
            uri: 'y1',
            prefix: 'y',
            local: 'a',
          },
        },
        ns: {
          x: 'x2',
        },
        isSelfClosing: true,
      },
    ],
    ['closetag', 'check'],
    ['closetag', 'rebind'],
    [
      'closenamespace',
      {
        prefix: 'x',
        uri: 'x2',
      },
    ],
    [
      'opentagstart',
      {
        name: 'check',
        attributes: {},
        ns: {
          x: 'x1',
          y: 'y1',
        },
      },
    ],
    [
      'attribute',
      {
        name: 'x:a',
        value: 'x1',
        uri: 'x1',
        prefix: 'x',
        local: 'a',
      },
    ],
    [
      'attribute',
      {
        name: 'y:a',
        value: 'y1',
        uri: 'y1',
        prefix: 'y',
        local: 'a',
      },
    ],
    [
      'opentag',
      {
        name: 'check',
        uri: '',
        prefix: '',
        local: 'check',
        attributes: {
          'x:a': {
            name: 'x:a',
            value: 'x1',
            uri: 'x1',
            prefix: 'x',
            local: 'a',
          },
          'y:a': {
            name: 'y:a',
            value: 'y1',
            uri: 'y1',
            prefix: 'y',
            local: 'a',
          },
        },
        ns: {
          x: 'x1',
          y: 'y1',
        },
        isSelfClosing: true,
      },
    ],
    ['closetag', 'check'],
    ['closetag', 'root'],
    [
      'closenamespace',
      {
        prefix: 'x',
        uri: 'x1',
      },
    ],
    [
      'closenamespace',
      {
        prefix: 'y',
        uri: 'y1',
      },
    ],
  ],
  strict: true,
  opt: {
    xmlns: true,
  },
})
